package day1216;

import jdk.nashorn.internal.ir.ReturnNode;

import java.lang.reflect.Array;
import java.util.Arrays;

public class fish {
    public static void main(String[] args) {
     //   System.out.println("2023/1/1-2024/1/1");
        System.out.println(dateOn("2022/1/1-2023/1/1"));//365 365 1
    }//731



    public static String dateOn(String date) {
        String[] date0 = date.split("-");
        String[] date1 = date0[0].split("/");
        String[] date2 = date0[1].split("/");
        int[] daysUnLeapYear = {31,28,31,30,31,30,31,31,30,31,30,31};
        int[] daysLeapYear = {31,29,31,30,31,30,31,31,30,31,30,31};
        int[] dateFirst = new int [3];
        int[] dateEnd = new int [3];
        for (int i = 0; i < date1.length; i++) {
            dateFirst[i] = Integer.parseInt(date1[i]);
            dateEnd[i] = Integer.parseInt(date2[i]);
        }
        //保证先后 //这里剪切了

        dateFirst=new int[]{2022,1,1}; dateEnd=new int[]{2024,2,1};//计算天数  365+365+1 :  731
        int daysa = 0;
        //1.如果时间线不在同一年————跨年了,先用for计算在endyear前的天数；
        for (int i = dateFirst[0]; i < dateEnd[0] ; i++) {//i=2023
            System.out.println("跨年了");
            //1.1.计算第一年还剩的天数
            //A.第一年还剩的天数，且今年是平年
            if (i == dateFirst[0] && isNormalYear(dateFirst[0])) {
                for (int j = dateFirst[1]-1; j < 12; j++) {
                    daysa = daysa + daysUnLeapYear[j];//j从  起始月份-1  到 11
                }//B.第一年还剩的天数，且今年是闰年
                System.out.println("第一年还剩的天数:"+daysa);
            }else if(i == dateFirst[0] && !isNormalYear(dateFirst[0])){
                for (int j = dateFirst[1]-1; j < 12; j++) {
                    daysa = daysa + daysLeapYear[j];
                }
            }
            //1.2.计算起始年份和结束年份之间的总天数。(循环后已经累加到第二年/1/1，后面直接加365/366到结束前一年)
            if(i != dateFirst[0] && isNormalYear(i)){
                //System.err.println(111);
                daysa = daysa + 365;
            }else if (i != dateFirst[0] && !isNormalYear(i)){
                //System.err.println(222);
                daysa = daysa + 366;
            }
            //1.3.计算
            if(i != dateEnd[0] && isNormalYear(i)){/////////////////////////////////////////
                //System.err.println(i+"i"+dateEnd[0]+"dateEnd[0]");
                System.err.println(dateEnd[1]-1+"dateEnd[1]-1");
                for (int n = 0; n < dateEnd[1]-1; n++) {
                     daysa = daysa + daysUnLeapYear[dateEnd[1]-1];
                }
                daysa = daysa + dateEnd[2];
            }else if (i != dateEnd[0] && !isNormalYear(i)){
                for (int n = 0; n < dateEnd[1]-1; n++) {
                    daysa = daysa + daysLeapYear[dateEnd[1]-1];
                }
                daysa = daysa + dateEnd[2];
            }//////////////////////////////////////////////////////////////////////////////
        }




        //2.如果时间线在同一年————没跨年
        if( dateFirst[0]  ==  dateEnd[0] ){
            System.out.println("没跨年");
            if (isNormalYear(dateFirst[0])){
                //2024/3/4--7/18累加三月到结束月底的所有天数
                for (int i = dateFirst[1]; i < dateEnd[1]; i++) {
                    daysa = daysa + daysUnLeapYear[i-1];
                }
                daysa = daysa -  dateFirst[2] + dateEnd[2] +1;//减去首月日期加上末月
            }else{
                //闰年累加三月到七月底的所有天数
                for (int i = dateFirst[1]; i < dateEnd[1]; i++) {
                    daysa = daysa + daysLeapYear[i-1];
                }
                daysa = daysa -  dateFirst[2] + dateEnd[2] +1;
            }
        }

        //3.天数计算完毕；直接除余判断渔夫状态
        System.out.println("距离第一天一共有："+daysa+"天。");
        if ( daysa%5==1 ||daysa%5==2 ||  daysa%5==3 ) {
            return "结果：渔夫正在打鱼中...";
        }else {
            return "结果：渔夫在晒网。";
        }
    }

    public static boolean isNormalYear(int y){
        if( y%4==0 && y%100!=0 ){
            return false;
        }else if ( y%400==0 ){
            return false;
        }/*else if ( y%3200==0 && y%172800!=0 ){
            return false;
        }*/
        return true;
    }
}
